package financeiro.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateUtil {
	/*
	 * Essa SessionFactory é criada como static final pois
	 * quando a clase for coloca na memoria sempre estará carregada.
	 */
	private static final SessionFactory SESSION_FACTORY = buildSessionFactory();
	/**
	 * Método utilizado para criar e configurar o hibernate
	 * @return uma SessionFactory configurada
	 */
	private static SessionFactory buildSessionFactory(){
		try{
			AnnotationConfiguration cfg = new AnnotationConfiguration();
			cfg.configure("hibernate.cfg.xml");
			return cfg.buildSessionFactory();
		} catch (Throwable e){
			System.out.println("Criação inicial do objeto SessionFactory falhou. Erro" + e.getMessage());
			throw new ExceptionInInitializerError(e);
		}
	}
	/**
	 * Método utilizado para capturar a SessionFactory
	 * @return uma SessionFactory
	 */
	public static SessionFactory getSessionFactory(){
		return SESSION_FACTORY;
	}
}
